Esta página explica passo a passo como compilar o FreeCAD 0.19 ou mais recente no Windows usando o compilador MSVC da Microsoft. Para obter informações sobre como usar MSYS2/MinGW, consulte Compilar no MinGW. Para outras plataformas, consulte Compilação.
Compilar o FreeCAD no Windows requer várias ferramentas e bibliotecas.
Dica: Escolher a opção Adicionar CMake ao PATH do sistema para todos os usuários ao instalar o CMake tornará o CMake acessível a partir do prompt de comando do Windows, o que pode ser útil.
Nota: É altamente recomendável compilar o FreeCAD com a versão do compilador para a qual o LibPack foi projetado. Por exemplo, você pode ter problemas ao compilar o FreeCAD 0.20 usando o MSVC 2017 porque o LibPack foi projetado para ser criado com o MSVC 2019 ou mais recente. Para atualizar seu LibPack mais tarde, consulte a seção Atualizando o LibPack.
A seguir, descrevemos o tratamento do código-fonte usando o frontend TortoiseGit. Este frontend se integra diretamente ao explorador de arquivos do Windows e tem uma grande comunidade de usuários para obter ajuda caso você tenha problemas.
Agora você pode obter o código fonte do FreeCAD:
Ao usar o frontend Git TortoiseGit:
https://github.com/FreeCAD/FreeCAD.git
e clique em OK.
O código fonte mais recente será baixado do repositório FreeCAD Git e a pasta será rastreada pelo Git.
Para criar uma ramificação de rastreamento local e baixar o código-fonte, abra um terminal (prompt de comando) e alterne para o diretório desejado e digite:
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git
O compilador padrão (recomendado) é o MS Visual Studio (MSVC). Embora possa ser possível usar outros compiladores, por exemplo, gcc via Cygwin ou MinGW, ele não é testado ou abordado aqui.
Você pode obter uma versão gratuita do MSVC (para uso individual) baixando a edição comunitária do MS Visual Studio.
Para aqueles que querem evitar a instalação do enorme MSVC com o mero propósito de ter um compilador, consulte CompileOnWindows - Reduzindo o espaço ocupado pelo disco.
Nota: Embora a edição comunitária do MSVC seja gratuita, para usar o IDE por mais de 30 dias de avaliação, você deve criar uma conta da Microsoft. Se você só compilar usando a linha de comando, você não precisa do IDE e, portanto, nenhuma conta da Microsoft.
Como um IDE alternativo livre e OpenSource você pode usar o KDevelop. Você pode usar o KDevelop para modificar e escrever código C++, mas deve usar a linha de comando para compilar.
Opcionalmente, você pode incluir os caminhos para algumas pastas para a variável PATH do sistema. Isso é útil se você quiser acessar programas nessas pastas a partir da linha de comando/powershell ou se quiser que programas especiais sejam encontrados pelo compilador ou CMake. Além disso, adicionar pastas ao PATH pode ser necessário se você não usou as opções correspondentes ao instalar o programa.
C:\Arquivos de Programas\CMake\bin para o PATH.
C:\Arquivos de Programas\TortoiseGit\bin para o PATH.
Para adicionar caminhos de pasta à variável PATH:
Depois de ter todas as ferramentas, bibliotecas e código-fonte do FreeCAD necessários, você está pronto para começar o processo de configuração e compilação. Este processo prosseguirá em cinco etapas:
Primeiro, configure o ambiente de compilação usando o CMake:
Nota: É importante especificar a variante de bit correta. Se você tiver a variante de 64 bits do LibPack, você também deve usar o compilador x64.
Isso iniciará a configuração e falhará devido à falta de configurações. Isso é normal, você ainda não especificou o local do LibPack. No entanto, existem outras falhas que podem ocorrer que exigem alguma ação adicional de sua parte.
Se ele falhar com a mensagem que Visual Studio não pôde ser encontrado, o suporte CMake no MSVC ainda não está instalado. Para fazer isso:
Se ele falhar com uma mensagem sobre a versão errada do Python ou Python ausente, então:
Se não houver nenhum erro sobre o Visual Studio ou Python, tudo está bem, mas o CMake ainda não sabe todas as configurações necessárias. Portanto, agora:
Agora não deve haver erros. Se você continuar a encontrar erros que você não pode diagnosticar, visite o fórum instalação/compilação no site do fórum FreeCAD. Se o CMake procedeu corretamente, clique em Gerar. Depois que isso for feito, você pode fechar o CMake e iniciar a compilação do FreeCAD usando o Visual Studio. No entanto, para a primeira compilação, mantenha-a aberta caso queira ou precise alterar algumas opções para o processo de compilação.
O sistema de compilação CMake oferece controle sobre alguns aspectos do processo de compilação. Em particular, você pode ativar e desativar alguns recursos ou módulos usando variáveis CMake.
Aqui está uma descrição de algumas dessas variáveis:
Nome da variável | Descrição | Padrão |
---|---|---|
BUILD_XXX | Construa o FreeCAD com o componente XXX. Se você não quiser/precisar compilar, por exemplo, o workbench OpenSCAD, desative a variável BUILD_OPENSCAD. FreeCAD então não terá esta bancada.
Nota: Alguns componentes são necessários para outros componentes. Se, por exemplo, você desmarcar BUILD_ROBOT CMake irá informá-lo que, em seguida, o componente Path não pode ser compilado corretamente. Portanto, verifique a saída do CMake depois de alterar uma opção BUILD_XXX! |
Depende |
BUILD_ENABLE_CXX_STD | A versão do padrão de linguagem C++. C++14 é o mais alto possível para o FreeCAD 0.19, enquanto pelo menos C++17 é necessário para o FreeCAD 0.20. Consulte também a nota na seção Criando com o Visual Studio 15 (2017) e 16 (2019) | Depende |
BUILD_DESIGNER_PLUGIN | Para criar o plugin Qt Designer, consulte esta seção abaixo | OFF |
BUILD_FLAT_MESH | Necessário ter uma compilação que inclua o recurso CreateFlatMesh | OFF |
CMAKE_INSTALL_PREFIX | A pasta de saída ao criar o INSTALL de destino, consulte também a seção Executando e instalando o FreeCAD | Pasta de instalação de programas padrão do Windows |
FREECAD_COPY_DEPEND_DIRS_TO_BUILD |
Copia as bibliotecas dependentes necessárias para executar o FreeCAD.exe para a pasta de compilação. Consulte também a seção Executando e instalando o FreeCAD. Nota: as opções só FREECAD_COPY_XXX aparecer se as bibliotecas ainda não tiverem sido copiadas. Se você só precisa atualizar/alterar para outra versão do LibPack, consulte a seção Atualizando o LibPack. Se você quiser trazer de volta as opções por algum motivo, você precisa excluir todas as pastas em sua pasta de compilação, exceto a pasta LibPack. No CMake, exclua o cache e inicie como se você compilasse pela primeira vez. || OFF | |
FREECAD_COPY_LIBPACK_BIN_TO_BUILD | Copia os binários LibPack necessários para executar o FreeCAD.exe para a pasta de compilação. Consulte também a seção Executando e instalando o FreeCAD. | OFF |
FREECAD_COPY_PLUGINS_BIN_TO_BUILD | Copia os arquivos de plug-in do Qt necessários para executar o FreeCAD.exe para a pasta de compilação. Consulte também a seção Executando e instalando o FreeCAD. | OFF |
FREECAD_LIBPACK_USE | Ative ou desative o uso do FreeCAD LibPack | ON |
FREECAD_LIBPACK_DIR | Diretório onde está a LibPack | FreeCAD's source code folder |
FREECAD_RELEASE_PDB | Crie bibliotecas de depuração (*.pdb) também para compilações de versão. Ele não afeta a velocidade (como uma compilação de depuração real faria) e pode ser muito útil para localizar falhas no código FreeCAD. Caso o FreeCAD trave, será criado um arquivo crash.dmp que pode ser carregado com o MSVC e se você tiver os arquivos PDB correspondentes mais o código-fonte dessa versão, você poderá depurar através do código. Sem os arquivos PDB não é possível depurar o código e tudo o que o depurador mostra é o nome da DLL onde a falha ocorreu. | ON |
FREECAD_USE_MP_COMPILE_FLAG | Adiciona a opção /MP (multiprocessador) aos projetos do Visual Studio, habilitando acelerações em CPUs de vários núcleos. Isso pode acelerar muito as compilações em processadores modernos.
Nota: Se você desativar FREECAD_USE_PCH, a compilação pode sobrecarregar rapidamente o espaço de heap, mesmo se você tiver 16 GB de RAM. || ON | |
FREECAD_USE_PCH | Pré-compila os cabeçalhos para economizar tempo de compilação. | ON |
FREECAD_USE_PYBIND11 | Inclui a biblioteca PyBind11. Necessário ter uma compilação que inclua o recurso CreateFlatMesh.
Nota: depois de ativá-lo, você pode receber um erro de configuração. Basta configurar novamente e o problema deve desaparecer. || OFF |
Dependendo do seu compilador, o processo para construir o FreeCAD será ligeiramente diferente. Nas seções a seguir, fluxos de trabalho conhecidos são descritos. Se você estiver construindo com o Qt Creator, pule para Construindo com o Qt Creator (desatualizado), caso contrário, prossiga diretamente:
Se você quiser compilar a partir da linha de comando, a saída do CMake mostrará o comando apropriado a ser executado (que depende do diretório de versão configurado). Mas este comando produzirá uma compilação de depuração que não funciona no Windows e resulta em um erro de importação Numpy no FreeCAD (que é um problema conhecido, mas difícil de corrigir). Você precisa especificar a opção --config Release para forçar uma compilação de Release:
cmake --build E:/release --config Release
Observe que a configuração de variáveis CMake como CMAKE_BUILD_TYPE não tem nenhum efeito, apenas especificar a opção --config como mostrado acima funciona.
Compilação de versão
Isso vai demorar bastante.
Para compilar um FreeCAD pronto para uso, compile o INSTALL de destino, consulte a seção Executando e instalando o FreeCAD.
Se você não receber nenhum erro, você está feito. Parabéns! Você pode sair do MSVC ou mantê-lo aberto.
Importante: Desde o Visual Studio 17.4, você não pode usar a otimização de código que está ativada por padrão para o SketcherGui de destino. Se você fizer isso, as restrições de ângulo serão deslocadas nos esboços. Para corrigir isso, clique com o botão direito do mouse nesse destino no gerenciador de soluções do MSVC e selecione a última entrada Propriedades no menu de contexto. Na caixa de diálogo exibida, vá para C/C++ → Optimization e lá desabilite a configuração Optimization. Finalmente, construa o ALL_BUILD alvo novamente.
Para uma compilação de depuração é necessário que seja usado o Python que está incluído no LibPack. Para garantir isso:
Como pré-requisito para a compilação de depuração, você precisa fazer o seguinte:
Agora você pode compilar:
Isso vai demorar bastante.
Se não houver erros de compilação e se as opções FREECAD_COPY_* mencionadas na etapa Configuração do CMake acima estiverem habilitadas, você poderá iniciar a compilação de depuração:
Isso iniciará a compilação de depuração do FreeCAD e você poderá usar o IDE do MSVC para depurá-lo.
Um tutorial em inglês que começa com a configuração no CMake Gui e continua até o comando 'Build' no Visual Studio 16 2019 está disponível no YouTube em Tutorial: Build FreeCAD from source on Windows 10.
Guia CMake
Agora o FreeCAD pode ser construído
Uma vez concluído, ele pode ser executado: Há 2 triângulos verdes no canto inferior esquerdo. Uma delas é a depuração. A outra é executada. Escolha o que quiser.
As etapas como compilar a partir da linha de comando depende do compilador. Para o MSVC 2017 as etapas são:
msbuild ALL_BUILD.vcxproj /p:Configuration=Release
ou
msbuild INSTALL.vcxproj /p:Configuration=Release
Essas etapas também podem ser automatizadas. Aqui está, por exemplo, uma solução para o MSVC 2017:
compile-FC install
Em vez de chamar compile-FC com a opção install, você também pode usar debug ou release:
debug - compilar o FreeCAD na configuração de depuração
release - compilar o FreeCAD na configuração da versão
install - compilar o FreeCAD na configuração da versão e criar uma configuração de instalação
Existem 2 métodos para executar o FreeCAD compilado:
Método 1: Executar o FreeCAD.exe que você encontrar em sua pasta de compilação no compartimento de subpasta bin
Método 2: Criar o destino INSTALL
O método 2 é o mais simples porque garante automaticamente que todas as bibliotecas necessárias para executar o FreeCAD.exe estão na pasta correta. O FreeCAD.exe e as bibliotecas serão gerados na pasta especificada na variável CMake CMAKE_INSTALL_PREFIX.
Para o Método 1, você precisa habilitar as opções FREECAD_COPY_* mencionadas na etapa Configuração do CMake acima.
Ao executar o FreeCAD, você pode encontrar DLLs ausentes ao usar determinadas bancadas de trabalho ou recursos de bancadas de trabalho. A mensagem de erro no console do FreeCAD não informará qual DLL está faltando. Para descobrir isso, você deve usar uma ferramenta externa:
import os os.system(r"~\DependenciesGui.exe") Nota: Em vez do ~ você deve especificar o caminho completo para o DependenciesGui.exe em seu sistema.
FreeCAD é muito ativamente desenvolvido. Portanto, seu código-fonte muda quase diariamente. Novos recursos são adicionados e bugs são corrigidos. Para se beneficiar dessas mudanças no código-fonte, você deve reconstruir seu FreeCAD. Isso é feito em duas etapas:
Ao usar o frontend Git TortoiseGit: Clique com o botão direito do mouse na pasta de código-fonte do FreeCAD no explorador de arquivos do Windows e selecione Pull no menu de contexto. Uma caixa de diálogo será exibida. Selecione a ramificação de desenvolvimento que você deseja obter. mestre é o ramo principal. Portanto, use isso, a menos que você queira compilar um novo recurso especial de uma ramificação que ainda não foi mesclada ao mestre. (Para obter mais informações sobre ramificações do Git, consulte Processo de desenvolvimento do Git.)
Por fim, clique em OK.
Abra um terminal (prompt de comando) e alterne para o diretório de origem. Em seguida, digite:
git pull https://github.com/FreeCAD/FreeCAD.git master
onde mestre o nome do ramo de desenvolvimento principal. Se você quiser obter código de outra ramificação, use seu nome em vez de mestre.
Se uma nova versão principal de uma dependência de terceiros, como o Open Cascade, for lançada, ou se uma dependência de terceiros tiver correções de bugs importantes, uma nova LibPack será lançada. Você pode encontrar a versão mais recente aqui.
Para atualizar seu LibPack, a seguinte receita é a prática recomendada:
Para participar do desenvolvimento FreeCAD você deve compilar e instalar as seguintes ferramentas:
FreeCAD usa Qt como kit de ferramentas para sua interface de usuário. Todas as caixas de diálogo são configuradas em arquivos de interface do usuário que podem ser editados usando o programa Qt Designer que faz parte de qualquer instalação do Qt e também está incluído no LibPack. O FreeCAD tem seu próprio conjunto de widgets Qt para fornecer recursos especiais, como adicionar uma unidade aos campos de entrada e definir propriedades de preferências.
O plugin não pode ser carregado pelo Qt Designer se ele foi compilado usando outra versão do Qt que não aquela em que seu Qt Designer/Qt Creator é baseado. Portanto, o plugin deve ser compilado junto com o FreeCAD:
Como resultado, você obterá o arquivo de plugin FreeCAD_widgets.dll na pasta ~\src\Tools\plugins\widget\Release
Para instalar o plugin, copie a DLL para:
~\FreeCADLibs_2_8_x64_VC2019\plugins\designer
C:\Qt\5.15.2\msvc2019_64\plugins\designer ou C:\Qt\5.15.2\msvc2019_64\bin\designer (você deve primeiro criar a subpasta designer.) (adapte os caminhos à sua instalação!).
Finalmente (re)inicie o Qt Designer e verifique seu menu Ajuda → Plugins. Se o plugin FreeCAD_widgets.dll estiver listado como sendo carregado, agora você pode projetar e alterar os arquivos .ui do FreeCAD. Caso contrário, você deve compilar a DLL por si mesmo.
Se você preferir usar o Qt Creator em vez do Qt Designer, o arquivo do plugin deve ser colocado nesta pasta:C:\Qt\Qt5.15.2\Tools\QtCreator\bin\plugins\designer Em seguida, (re)inicie o Qt Creator, alterne para o modo Design e, em seguida, verifique o menu Ferramentas → Editor de Formulários → Sobre os plug-ins do Qt Designer. Se o FreeCAD_widgets.dll do plugin estiver listado como sendo carregado, agora você pode projetar e alterar os arquivos .ui do FreeCAD. Caso contrário, você deve compilar a DLL por si mesmo.
FreeCAD tem o recurso para fornecer miniaturas de visualização para *. Arquivos FCStd. Isso significa que no explorador de arquivos do Windows *. Os arquivos FCStd são mostrados com uma captura de tela do modelo que ele contém. Para fornecer esse recurso, o FreeCAD precisa ter o arquivo FCStdThumbnail.dll instalado no Windows.
A DLL é instalada desta forma:
regsvr32 FCStdThumbnail.dll
Portanto, verifique se funciona, certifique-se de que no FreeCAD a opção de preferências Salvar miniatura no arquivo de projeto ao salvar o documento esteja ativada e salve um modelo. Em seguida, exiba no Windows Explorer a pasta do modelo salvo usando um modo de exibição de símbolo. Agora você deve ver uma captura de tela do modelo na exibição de pasta.
Para compilar o FCStdThumbnail.dll
O LibPack vem com uma versão do Open Cascade que é adequado para uso geral. No entanto, sob algumas circunstâncias, você pode querer compilar contra uma versão alternativa do Open Cascade, como um de seus lançamentos oficiais, ou um fork corrigido.
Ao compilar o Open Cascade para FreeCAD, observe que não há garantia de que o FreeCAD funcionará com todas as versões do Open Cascade. Observe também que quando você estiver usando a biblioteca Netgen, você deve usar a versão NetGen que ele aprovou para compilar com a versão Open Cascade que você gosta de compilar.
Para compilar:
Nome da variável | Descrição | Padrão |
---|---|---|
3RDPARTY_DIR | O caminho para os componentes 3rdparty. Recomenda-se usar a pasta como entrada onde está o LibPack usado. Deixe explicitamente este campo vazio. | vazio |
3RDPARTY_DOXYGEN_EXECUTABLE | O caminho para o executável do componente 3rdparty Doxygen. Recomenda-se instalar o Doxygen. O CMake irá encontrá-lo automaticamente. | vazio |
3RDPARTY_FREETYPE_DIR | O caminho para o componente 3rdparty necessário Freetype. Recomenda-se usar a pasta como entrada onde está o LibPack usado. | vazio |
3RDPARTY_RAPIDJSON_DIR | Disponível somente se USE_RAPIDJSON for usado. O caminho para o componente 3rdparty RapidJSON. Recomenda-se NÃO usar uma pasta LibPack existente como entrada. Você pode usar a pasta RapidJSOn de um LibPack, mas copie-a para uma nova pasta e use essa nova pasta como entrada. | vazio |
3RDPARTY_TCL_DIR |
O caminho para o componente 3rdparty necessário TCL. Recomenda-se NÃO usar uma pasta LibPack existente como entrada. Tomemos por exemplo uma dessas versões, extraia-a e tome isso como pasta de entrada para o CMake. |
vazio |
3RDPARTY_TK_DIR | O caminho para o TK do componente 3rdparty necessário. Recomenda-se NÃO usar uma pasta LibPack existente como entrada. Tomemos por exemplo uma dessas versões, extraia-a e tome isso como pasta de entrada para o CMake. | vazio |
3RDPARTY_VTK_DIR | Disponível somente se USE_VTK for usado. O caminho para o VTK do componente 3rdparty necessário. Recomenda-se usar a pasta como entrada onde está o LibPack usado. Se você usar outra pasta, certifique-se de que não usa VTK 9.x ou mais recente. | vazio |
BUILD_RELEASE_DISABLE_EXCEPTIONS | Desabilita o tratamento de exceções para compilações de versão. Para FreeCAD você deve defini-lo como OFF. | ON |
INSTALL_DIR | A pasta de saída ao criar o INSTALL de destino. Se a compilação foi bem-sucedida, pegue os arquivos dessa pasta para atualizar seu LibPack. | Pasta de instalação do programa padrão do Windows |
INSTALL_DIR_BIN | A subpasta de saída para a DLL ao criar o INSTALL de destino. Você deve alterá-lo para bin. | win64/vc14/bin |
INSTALL_DIR_LIB | A subpasta de saída para os arquivos .lib ao criar o INSTALL de destino. Você deve alterá-lo para lib | win64/vc14/lib |
USE_RAPIDJSON | Para compilar o Open Cascade com suporte para RapidJSON. Habilitar isso é obrigatório para obter suporte para o formato de arquivo glTF. | OFF |
USE_VTK | Para compilar o Open Cascade com suporte para VTK. Habilitar isso é o ideal. Você pode usar isso para construir a ponte VTK do Open Cascade. | OFF |
Para compilar o FreeCAD usando o Open Cascade auto-compilado, você deve fazer o seguinte:
absoluto D:/FreeCADLibs_12.5.4_x64_VC17/lib/freetype.lib torna-se apenas freetype.lib
O LibPack vem com uma versão do Netgen que será testada para ser construída com a versão Open Cascade do LibPack. O problema é que cada nova versão do Netgen altera a API. Além disso, cada nova versão do Open Cascade faz o mesmo. Portanto, não se pode simplesmente mudar facilmente a versão Netgen.
No entanto, você pode criar Netgen no entanto. Esta é uma tarefa fácil:
Nome da variável | Descrição | Padrão |
---|---|---|
CMAKE_INSTALL_PREFIX | A pasta de saída ao criar o INSTALL de destino. Se a compilação foi bem-sucedida, pegue os arquivos dessa pasta para atualizar seu LibPack. | C:/netgen |
OpenCasCade_DIR | O caminho para os arquivos CMake do Open Cascade. Se você criou o Open Cascade conforme descrito na seção Compilando o Open Cascade, você pode usar a subpasta cmake da pasta que você usou como INSTALL_DIR. Caso contrário, use a subpasta cmake do seu LibPack. Observe aqui que o LibPack já deve conter uma compilação Open Cascade adequada. Independente da pasta que você usa, agora você também deve criar lá uma subpasta lib e copiar nos arquivos freetype.lib e freetyped.lib do seu LibPack. | vazio |
USE_GUI | defina-o como OFF | ON |
USE_NATIVE_ARCH | defina-o como OFF; isso só é necessário para suportar CPUs mais antigas que não têm o conjunto de instruções AVX2 | ON |
USE_OCC | defina-o como ON | OFF |
USE_PYTHON | defina-o como OFF | ON |
USE_SUPERBUILD | defina-o como OFF | ON |
ZLIB_INCLUDE_DIR | O caminho para o componente 3rdparty necessário zlib. Recomenda-se usar a pasta como entrada onde está o LibPack usado. | vazio |
ZLIB_LIBRARY_DEBUG | O caminho para o arquivo ZLib zlibd.lib. Ele está localizado na subpasta lib da sua pasta LibPack. | vazio |
ZLIB_LIBRARY_RELEASE | O caminho para o arquivo ZLib zlib.lib. Ele está localizado na subpasta lib da sua pasta LibPack. | vazio |
nome: CMAKE_DEBUG_POSTFIX, tipo: string, conteúdo: _d Isso garante que os nomes de arquivo das bibliotecas de depuração recebam outro nome que não as bibliotecas de versão e não possam ser trocados acidentalmente.
Para compilar o FreeCAD usando o Netgen auto-compilado, você deve fazer o seguinte:
Veja também